package cn.dz.domain.mp.po;

import cn.dz.domain.mp.enums.UserStatus;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.databind.JsonNode;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.time.LocalDateTime;

/**
 * @ClassName User
 * @package: cn.dz.domain.mp.po
 * @Description 用户类
 * @Author dz
 * @Date 2025/1/3 11:56
 * @Version 1.0
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName(value = "user", autoResultMap = true)
public class User {
    /**
     * 用户ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 用户名
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    /**
     * 注册手机号
     */
    private String phone;
    /**
     * 详细信息
     */
    @ApiModelProperty("详细信息，JSON对象")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private UserInfo info;  // 使用 JsonNode 来表示 JSON 对象
    /**
     * 使用状态(1正常 2冻结)
     */
    private UserStatus status;
    /**
     * 账户余额
     */
    private Integer balance;
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
